home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)zf.d64 / txt.bootm < prev    next >
Text File  |  2007-03-01  |  22KB  |  671 lines

  1. ╓╫╤╒C@@@@@@@@╓╔┌.┬╧╧╘╒╙┴áá   áV@ NY┬@YA@Y@A@F@N  ááááááááááááááááD╗P                                     @**********************************************************@ ▒ª  █                              
  2. ╠ISTING OF ┼╪├╧═┴╠.14
  3.  
  4. ├300  PHA          SAVE ACCU ON STACK
  5. ├301  LDA $9┴      GET OUTPUT DEVICE
  6. ├303  CMP #$03     OUTPUT ON SCREEN?
  7. ├305  BEQ $├30┴    YES, THEN NEW ROUTINE
  8. ├307  JMP $╞1─5    IF NOT SCREEN THEN BACK TO ╦┼╥╬┴╠
  9. ├30┴  PLA          
  10. ├30┬  PHA          GET BYTE IN ACCU AGAIN
  11. ├30├  STA $─7      SAVE BYTE IN $D7
  12. ├30┼  TXA          
  13. ├30╞  PHA          X ON STACK
  14. ├310  TYA          
  15. ├311  PHA          Y ON STACK
  16. ├312  LDA $─7      GET SAVED BYTE
  17. ├314  LDX $├59┼    READ LEADIN-FLAG
  18. ├317  BEQ $├329    TEST WHEN THERE IS NO LEADIN
  19. ├319  STA $2─      ELSE SAVE BYTE AS ERROR NUMBER
  20. ├31┬  LDA #$00     ACCU:=╞┴╠╙┼
  21. ├31─  STA $├59┼    RESET LEADIN FLAG
  22. ├320  LDA $0800    SET FLAG FOR ERROR MESSAGE
  23. ├323  JSR $├341    ERROR MESSAGE
  24. ├326  JMP $┼6┴8    CLOSE ROUTINE
  25.  
  26. ├329  CMP #$07     CHR$(7) ?
  27. ├32┬  BNE $├333    IF NOT CHR$(7) THEN TEST
  28. ├32─  JSR $├5┬5    BEEP
  29. ├330  JMP $┼6┴8    CLOSE ROUTINE
  30.  
  31. ├333  CMP #$1┬     CHR$(27) ? (LEADIN)
  32. ├335  BNE $├33┼    IF NOT THEN GIVE OUT
  33. ├337  LDA #$╞╞     ACCU:=╘╥╒┼
  34. ├339  STA $├59┼    SET LEADIN FLAG
  35. ├33├  BNE $├330    CLOSE ROUTINE
  36. ├33┼  JMP $┼71─    GIVE OUT
  37.  
  38. ├341  JSR $├9┬╞    ERROR MESSAGE
  39. ├344  RTS          ROOM FOR A JMP
  40.  
  41. ├345  00           FREE
  42. ├346  00           FREE
  43.  
  44. ├347  LDA #$00     POINTER ON $C400
  45. ├349  LDY #$├4     
  46. ├34┬  STA $0324    
  47. ├34┼  STY $0325    SET CHRIN VECTOR ON $C400
  48. ├351  LDA #$00     POINTER ON $C300
  49. ├353  LDY #$├3     
  50. ├355  STA $0326    
  51. ├358  STY $0327    SET CHROUT VECTOR ON $C300
  52. ├35┬  LDA #$51     
  53. ├35─  STA $19┬0    
  54. ├360  JMP $├8┼5    CONTINU INIT ON $C8E5
  55.  
  56. ├363  CMP #$0┬     ^K ? (DELETE TO END OF LINE)
  57. ├365  BNE $├377    IF NOT THEN TEST
  58. ├367  LDA #$20     SPACE IN ACCU TO DELETE REST OF LINE
  59. ├369  LDY $─3      READ X-POSITION OF CURSOR
  60. ├36┬  STA ($─1),Y  ERASE
  61. ├36─  INY          NEXT CHARACTER ON LINE
  62. ├36┼  CPY $─5      INDEX EQUALS LINE LENGTH?
  63. ├370  BCC $├36┬    LOWER THEN ERASE
  64. ├372  BEQ $├36┬    EQUAL THEN ERASE LAST CHAR
  65. ├374  JMP $├4├┴    WAIT FOR KEY STROKE
  66.  
  67. ├377  CMP #$15     ^U ? (CURSOR TO START OF LINE)
  68. ├379  BNE $├381    IF NOT THEN TEST
  69. ├37┬  LDA #$00     
  70. ├37─  STA $─3      ZERO X-POSITION OF CURSOR
  71. ├37╞  BEQ $├374    WAIT FOR KEY STROKE
  72.  
  73. ├381  CMP #$0╞     ^O (END OF LINE)
  74. ├383  BNE $├395    IF NOT, NO SPECIAL CHAR
  75. ├385  LDY $─5      GET LINE LENGTH
  76. ├387  LDA ($─1),Y  GET CHAR IN Y
  77. ├389  CMP #$20     IS IT A SPACE?
  78. ├38┬  BNE $├390    IF NOT THEN END OF LINE IS FOUND
  79. ├38─  DEY          ELSE A POSITION BACK
  80. ├38┼  BNE $├387    NOT ZERO YET, THEN GO ON
  81. ├390  STY $─3      CURSOR POSITION TO END OF LINE
  82. ├392  JMP $├4├┴    WAIT FOR NEXT KEY STROKE
  83. ├395  RTS          NO SPECIAL CHAR
  84.  
  85. ├396  LDA #$94     CODE INSERT IN ACCU
  86. ├398  JSR $┼716    TO SCREEN
  87. ├39┬  LDA #$00     
  88. ├39─  STA $─8      ZERO NUMBER OF INSERTS
  89. ├39╞  JMP $┼6┴8    CLOSE ROUTINE
  90.  
  91. ├3┴2-├3╞╞          SCR SCRATCH AREA FOR FUTURE EXTENSIONS
  92.  
  93. ├400  LDA $99      INPUT FROM?
  94. ├402  BNE $├40╞    NOT FROM KEYBOARD THEN BACK TO ╦┼╥╬┴╠
  95. ├404  LDA $─3      X-POSITION CURSOR
  96. ├406  STA $├┴      X-POSITIE FOR INPUT
  97. ├408  LDA $─6      Y-POSITIE CURSOR
  98. ├40┴  STA $├9      Y-POSITIE FOR INPUT
  99. ├40├  JMP $├469    IS IT A SPECIAL CHARACTER?
  100. ├40╞  JMP $╞166    BACK TO ╦┼╥╬┴╠
  101.  
  102. ├412  JSR $├477    CHAR TO SCREEN
  103. ├415  LDA $├6      NUMBER OF CHARS IN KEYBOARD BUFFER
  104. ├417  STA $├├      0 = FLASH CURSOR
  105. ├419  STA $0292    0 = AUTO SCROLL DOWN
  106. ├41├  BEQ $├415    WAIT FOR KEY STROKE
  107. ├41┼  SEI          NO INTERRUPTS NOW, NO FLASHING CURSOR
  108. ├41╞  LDA $├╞      CURSOR ON?
  109. ├421  BEQ $├42╞    JUMP IF NOT ON
  110. ├423  LDA $├┼      GET CHAR UNDER CURSOR
  111. ├425  LDX $0287    GET COLOR UNDER CURSOR
  112. ├428  LDY #$00     
  113. ├42┴  STY $├╞      CURSOR OFF
  114. ├42├  JSR $┼┴13    CHAR AND COLOR BACK AGAIN (CURSOR OFF)
  115. ├42╞  JSR $┼5┬4    GET CHAR FROM KEYBOARD BUFFER
  116. ├432  JSR $├4┴1    TEST IF SPECIAL CHAR
  117.  
  118. ├435  CMP #$0─     WAS IT A RETURN?
  119. ├437  BNE $├412    IF NOT THEN GIVE OUT CHAR
  120. ├439  LDY $─5      GET LINE LENGTH
  121. ├43┬  STY $─0      CR FLAG TRUE
  122. ├43─  LDA ($─1),Y  READ CHAR FROM LINE
  123. ├43╞  CMP #$20     IS IT A SPATIE?
  124. ├441  BNE $├446    IF NOT THEN TEST PREVIOUS CHAR
  125. ├443  DEY          INDEX ONE POSITION BACK
  126. ├444  BNE $├43─    IF NOT AT START OF LINE, THEN TEST
  127. ├446  INY          ONE POSITION FORWARD
  128. ├447  STY $├8      MARK AS END OF LINE
  129. ├449  LDY #$00     
  130. ├44┬  STY $0292    AUTO SCROLL DOWN ON
  131. ├44┼  STY $─3      X POSITION AT START LINE
  132. ├450  STY $─4      QUOTE MODE FLAG FALSE
  133. ├452  LDA $├9      GET LINE NUMBER
  134. ├454  BMI $├471    IFNOT VALID THEN READ FROM START
  135. ├456  LDX $─6      GET PHYSICAL LINE NUMBER
  136. ├458  JSR $┼6┼─    CALCULATE LOGICAL LINE NUMBER
  137. ├45┬  CPX $├9      EQUALS LINE NUMBER OF INPUT?
  138. ├45─  BNE $├471    IF NOT THEN READ FROM START
  139. ├45╞  LDA $├┴      GET X POSITION OF INPUT
  140. ├461  STA $─3      INDEX OF FIRST CHAR TO READ
  141. ├463  CMP $├8      END OF LOGICAL INPUT LINE?
  142. ├465  BCC $├471    LESS THEN READ
  143. ├467  BCS $├474    GREATER OR EQUAL, THEN READ NEW LINE
  144.  
  145. ├469  TYA          
  146. ├46┴  PHA          SAVE Y-REGISTER
  147. ├46┬  TXA          
  148. ├46├  PHA          SAVE X-REGISTER
  149. ├46─  LDA $─0      GET CR FLAG
  150. ├46╞  BEQ $├415    READ NEW LINE
  151. ├471  JMP $┼63┴    IF NOT THEN ╦┼╥╬┴╠ (READ CHAR)
  152. ├474  JMP $┼65─    READ LINE
  153.  
  154. ├477  PHA          SUBROUTINE, CHAR OUT
  155. ├478  STA $─7      SAVE CHAR ON $D7
  156. ├47┴  TXA          
  157. ├47┬  PHA          SAVE X REGISTER
  158. ├47├  TYA          
  159. ├47─  PHA          SAVE Y REGISTER
  160. ├47┼  LDA $─7      GET CHAR BACK
  161. ├480  CMP #$22     QUOTE OUT?
  162. ├482  BNE $├48╞    IF NOT THEN TEST
  163. ├484  BIT $├4┴0    QUOTEMODE ON?
  164. ├487  BMI $├48├    JUMP IF 7TH BIT IS SET (QUOTEMODE ON)
  165. ├489  JMP $┼693    NO QUOTEMODE
  166. ├48├  JMP $┼73╞    QUOTEMODE
  167.  
  168. ├48╞  CMP #$94     CODE FOR INSERT?
  169. ├491  BEQ $├496    IF SO THEN DO SO
  170. ├493  JMP $┼71─    NO SPECIAL CHAR, DO NORMAL ROUTINE
  171. ├496  BIT $├4┴0    INSERT MODE ON?
  172. ├499  BVS $├493    BIT 6 SET, THEN INSERT MODE
  173. ├49┬  JMP $├396    OUT WITHOUT INSERT MODE
  174.  
  175. ├49┼  00           FREE
  176. ├49╞  00           FREE
  177. ├4┴0  00           QUOTEFLAG BIT 7:1 = QUOTEMODE
  178.                              BIT 6:1 = INSERTMODE
  179.  
  180. ├4┴1  CMP #$16     ^V ? (SET COLORS)
  181. ├4┴3  BNE $├4┬7    IF NOT THEN TEST
  182. ├4┴5  LDA #$0┬     COLOR 11 (= GREY 1)
  183. ├4┴7  STA $─020    SET BORDER COLOR
  184. ├4┴┴  LDA #$00     COLOR 0 (= BLACK)
  185. ├4┴├  STA $─021    SET BACKGROUND COLOR
  186. ├4┴╞  LDA #$01     COLOR 1 (= WHITE)
  187. ├4┬1  STA $0286    SET TEXT COLOR
  188. ├4┬4  JMP $├4├┴    EDIT LINE
  189.  
  190. ├4┬7  CMP #$17     ^W ? (SET COLORS)
  191. ├4┬9  BNE $├4├╞    IF NOT THEN TEST
  192. ├4┬┬  LDA #$0┼     COLOR 14 (= LIGHT BLUE)
  193. ├4┬─  STA $─020    SET BORDER COLOR
  194. ├4├0  LDA #$06     COLOR 6 (= BLUE)
  195. ├4├2  STA $─021    SET BACKGROUND COLOR
  196. ├4├5  LDA #$0┼     COLOR 14 (= LIGHT BLUE)
  197. ├4├7  STA $0286    ZET TEXT KLEUR
  198. ├4├┴  PLA          
  199. ├4├┬  PLA          NO RTS, SO GET 2 BYTE FROM STACK
  200. ├4├├  JMP $├415    EDIT
  201.  
  202. ├4├╞  CMP #$01     ^A ? (REMOVE INDENTION)
  203. ├4─1  BNE $├50┼    IF NOT THEN TEST
  204. ├4─3  LDA $─5      GET PHYSICAL LINE LENGTH
  205. ├4─5  CMP #$28     40 CHARS?
  206. ├4─7  BCC $├4├┴    IF SO THEN READY
  207. ├4─9  LDY #$28     TO 41TH POSITION
  208. ├4─┬  LDA ($─1),Y  READ 41TH CHAR
  209. ├4──  CMP #$20     IS IT A SPACE?
  210. ├4─╞  BNE $├4├┴    IF NOT THEN READY (NO INDENT)
  211. ├4┼1  LDA $─3      GET X-POSITION CURSOR
  212. ├4┼3  PHA          SAVE IT
  213. ├4┼4  LDA #$00     
  214. ├4┼6  PHA          ZERO ON STACK
  215. ├4┼7  LDA #$00     
  216. ├4┼9  STA $─8      ZERO NUMBER OF INSERTS
  217. ├4┼┬  LDY #$29     SEARCH FROM 42TH CHAR
  218. ├4┼─  LDA ($─1),Y  READ CHAR
  219. ├4┼╞  CMP #$20     IS IT A SPACE?
  220. ├4╞1  BNE $├4╞┴    IF NOT THEN FIRST CHAR FOUND
  221. ├4╞3  INY          NEXT CHAR
  222.  
  223. ├4╞4  CPY #$50     LAST CHAR?
  224. ├4╞6  BCC $├4┼─    IF NOT THEN TEST
  225. ├4╞8  BCS $├506    IF SO STACK BACK AND READY
  226. ├4╞┴  STY $─3      X-POSITIE CURSOR ON THAT CHAR
  227. ├4╞├  LDA #$14     CODE FOR DELETE
  228. ├4╞┼  JSR $┼716    REMOVE SPACE
  229. ├501  DEY          POSITION MINUS ONE
  230. ├502  CPY #$29     40TH CHAR?
  231. ├504  BCS $├4╞┼    IF NOT THEN REMOVE MORE SPACES
  232. ├506  PLA          
  233. ├507  STA $─8      ZERO NUMBER OF INSERT
  234. ├509  PLA          
  235. ├50┴  STA $─3      X-POSITIE BACK
  236. ├50├  BPL $├4├┴    AND EDIT
  237.  
  238. ├50┼  CMP #$83     CODE FOR SHIFT ╥╒╬/╙╘╧╨ ?
  239. ├510  BNE $├516    IF NOT THEN TEST
  240. ├512  LDA #$84     CHANGE CODE IN $84
  241. ├514  BNE $├51┼    TREAT IT AS A FUNCTION KEY
  242.  
  243. ├516  CMP #$85     F1
  244. ├518  BCC $├540    LESS THEN NO FUNCTION KEY
  245. ├51┴  CMP #$8─     F8+1
  246. ├51├  BCS $├540    GREATER ORR EQUAL THEN NO FUNCTION KEY
  247. ├51┼  SEC          SET CARRY
  248. ├51╞  SBC #$84     SUBSTRACT $84
  249. ├521  ASL A        DOUBLE
  250. ├522  STA $├543    SAVE
  251. ├525  ASL A        DOUBLE
  252. ├526  ASL A        DOUBLE (8 TIMES)
  253. ├527  ADC $├543    ADD WITH 2*NUM (NOW 10*GETAL)
  254. ├52┴  TAX          USE THIS RESULT AS INDEX
  255. ├52┬  LDY #$00     ZERO Y
  256. ├52─  LDA $├544,X  GET FUNCTION TEXT
  257. ├530  BEQ $├53┬    IF LAST CHAR THEN READY
  258. ├532  STA $0277,Y  TEXT INTO KEYBOARD BUFFER
  259. ├535  INX          INDEX +1
  260. ├536  INY          NEXT CHAR
  261. ├537  CPY #$0┴     10TH CHAR?
  262. ├539  BCC $├52─    IF NOT GO ON
  263. ├53┬  STY $├6      NUMBER OF CHARS IN BUFFER
  264. ├53─  JMP $├4├┴    READY AND EDIT
  265.  
  266. ├540  JMP $├363    TEST ON SPECIAL CHARS
  267.  
  268. ├543  00           TEMPORARY FOR MULTIPLICATION
  269.  
  270. ├544-├54─          TEXT FOR SHIFT ╥╒╬/╙╘╧╨
  271. ├54┼-├557          TEXT FOR ╞1
  272. ├558-├561          TEXT FOR ╞3
  273. ├562-├56┬          TEXT FOR ╞5
  274. ├56├-├575          TEXT FOR ╞7
  275. ├576-├57╞          TEXT FOR ╞2
  276. ├580-├589          TEXT FOR ╞4
  277. ├58┴-├593          TEXT FOR ╞6
  278. ├594-├59─          TEXT FOR ╞8
  279.  
  280. ├59┼  00           FLAG LEADIN
  281. ├59╞  00           FREE
  282.  
  283. ├5┴0  LDX #$18     NUMBER OF ╙╔─ REGISTERS IN X
  284. ├5┴2  LDA #$00     ZERO ACCU
  285. ├5┴4  STA $─400,X  RESET REGISTER X
  286. ├5┴7  DEX          NEXT REGISTER
  287. ├5┴8  BPL $├5┴4    MORE THEN JUMP
  288. ├5┴┴  RTS          READY
  289.  
  290. ├5┴┬  JSR $├5┴┴    WAIT (EMPTY ROUTINE)
  291. ├5┴┼  DEX          X:-1
  292. ├5┴╞  BNE $├5┴┬    JUMP FOR LONGER WAIT
  293. ├5┬1  DEY          Y:-1
  294. ├5┬2  BNE $├5┴┬    AND JUMP
  295. ├5┬4  RTS          READY
  296.  
  297. ├5┬5  JSR $├5┴0    INIT ╙╔─
  298. ├5┬8  LDX #$03     SET FIRST FOUR REGISTERS
  299. ├5┬┴  LDA $├5╞6,X  GET VALUE FROM TABLE
  300. ├5┬─  STA $─400,X  SET REGISTER (TONE AND PULSE)
  301. ├5├0  DEX          INDEX:-1
  302. ├5├1  BPL $├5┬┴    IF NOT LAST REG THEN JUMP
  303. ├5├3  LDA $├5╞┬    READ ATTACK & DECAY
  304. ├5├6  STA $─405    SET ATTACK & DECAY
  305. ├5├9  LDA $├5╞├    READ SUSTAIN & RELEASE
  306. ├5├├  STA $─406    SET SUSTAIN & RELEASE
  307. ├5├╞  LDA $├5╞─    READ VOLUME
  308. ├5─2  STA $─418    SET VOLUME
  309. ├5─5  LDA $├5╞┴    READ SOUNDTYPE
  310. ├5─8  ORA #$01     SET GATE BIT
  311. ├5─┴  STA $─404    SET SOUNDTYPE & GATEBIT IN ╙╔─
  312. ├5──  LDY $├5╞┼    READ GATE TIME
  313. ├5┼0  JSR $├5┴┬    AND WAIT FOR GATE
  314. ├5┼3  LDA $├5╞┴    RESET GATEBIT
  315. ├5┼6  STA $─404    SET SOUNDTYPE WITHOUT GATE
  316. ├5┼9  LDY $├5╞╞    RAED RELEASE TIME
  317. ├5┼├  JSR $├5┴┬    WAIT FOR RELEASE
  318. ├5┼╞  JSR $├5┴0    RESET ╙╔─ AGAIN
  319. ├5╞2  LDA $0800    GET FLAG FOR ERROR MESSAGE
  320. ├5╞5  RTS          READY
  321.  
  322. ├5╞6  00           FREQ LOW
  323. ├5╞7  30           FREQ HIGH
  324. ├5╞8  00           PULSE/PAUSE LOW
  325. ├5╞9  08           PULSE/PAUSE HIGH
  326. ├5╞┴  40           SOUNDTYPE WITHOUT GATE BIT
  327. ├5╞┬  00           ATTACK/DECAY
  328. ├5╞├  ╞0           SUSTAIN/RELEASE
  329. ├5╞─  0╞           VOLUME
  330. ├5╞┼  10           GATE TIME
  331. ├5╞╞  01           RELEASE TIME
  332.  
  333. ├600  LDX #$3├     POINTER ON $033C
  334. ├602  LDY #$03     
  335. ├604  STX $┬2      
  336. ├606  STY $┬3      SET POINTER CASSETTE BUFFER
  337. ├608  JMP $╞─15    SET ╦┼╥╬┴╠ VECTORS
  338.  
  339. ├60┬  CPX #$08     DEVICE 8? (DISK)
  340. ├60─  BEQ $├611    THEN NO OTHER SEC ADDRESS
  341. ├60╞  LDY #$00     SECONDARY ADDRESS FOR TAPE
  342. ├611  JMP $╞╞┬┴    SET FILE PARAMETERS
  343.  
  344. ├614  STY $02      SAVE INDEX IN MEMORY
  345. ├616  JSR $╞╞├╞    GET BYTE FROM DEVICE
  346. ├619  TAY          SAVE IT IN Y
  347. ├61┴  LDA $┬┴      GET DEVICE ADDRESS
  348. ├61├  CMP #$01     IS IT TAPE?
  349. ├61┼  BNE $├621    IF NOT THEN READY
  350. ├620  DEY          VALUE MINUS 1
  351. ├621  TYA          BYTE IN ACCU AGAIN
  352. ├622  LDY $02      GET Y REGISTER
  353. ├624  RTS          READY
  354.  
  355. ├625  LDA #$26     
  356. ├627  STA $2╞52    PREVENTS TAPE RUNNING AFTER RESET
  357. ├62┴  LDA #$02     
  358. ├62├  STA $2╞5┬    BORDER COLOR ON ├╧═┴╠ STARTUP
  359. ├62╞  LDA #$00     
  360. ├631  STA $2╞56    BACKGROUND COLOR
  361. ├634  LDA #$01     
  362. ├636  STA $0286    TEXT COLOR
  363. ├639  LDA #$55     'U'
  364. ├63┬  STA $2402    USR FILES FOR ┼╬╘┼╥/╠╔╙╘
  365. ├63┼  LDA #$02     
  366. ├640  STA $2┼┼2    BORDER COLOR AFTER RESTORE
  367. ├643  LDA #$00     
  368. ├645  STA $2┼┼7    BACKGROUND COLOR
  369. ├648  LDA #$01     
  370. ├64┴  STA $2┼┼├    TEXT COLOR
  371. ├64─  JMP $├347    VECTOREN CHRIN EN CHROUT ZETTEN
  372.  
  373. ├650  00           FREE
  374. ├651  00           FREE
  375. ├652  00           FREE
  376.  
  377. ├653-├7┴9          TEXT FOR ─UTCH ├╧═┴╠ ╒SERS ╟ROUP
  378.  
  379. ├7─7-├7─╞          FILENAME 'COMAL.14'
  380.  
  381. ├7├0-├7╞0          LENGTH FOLLOWD BY NAME OF ┬┴╙╔├ PROGRAM (TURBO)
  382.  
  383. ├7╞1  00           FREE
  384. ▀-18-
  385.  
  386.  
  387. ├7╞2  LDA $┬┴      GET LAST USED DEVICE
  388. ├7╞4  STA $8004    SAVE IT ON $8004
  389. ├7╞7  LDX #$╞╞     INIT VALUE FOR STACK
  390. ├7╞9  SEI          NO INTERRUPTS NOW
  391. ├7╞┴  TXS          RESET STACK POINTER
  392. ├7╞┬  CLD          NO DECIMALE MODE
  393. ├7╞├  JSR $╞─┴3    PREPARE FOR INTERRUPTS
  394. ├7╞╞  LDY #$00     INIT INDEX REGISTER
  395. ├801  TYA          ZERO ACCU
  396. ├802  STA $0002,Y  RESET ZERO PAGE
  397. ├805  STA $0200,Y  RESET PAGE 2
  398. ├808  STA $0300,Y  RESET PAGE 3
  399. ├80┬  INY          INDEX:+1
  400. ├80├  BNE $├802    LAST BYTE?
  401. ├80┼  LDA #$08     LOW BYTE IS ZERO
  402. ├810  STA $0282    SET BOTTOM ON $0800
  403. ├813  LDA #$┴0     LOW BYTE IS ZERO
  404. ├815  STA $0284    SET TOP ON $A000
  405. ├818  LDA #$04     
  406. ├81┴  STA $0288    SCREEN ON PAGE 4 ($0400)
  407. ├81─  JSR $├600    SET CASSETTE BUFFER AND INIT VECTORS
  408. ├820  JSR $╞╞5┬    RESET VIDEO CHIP
  409. ├823  CLI          INTERRUPTS ON
  410. ├824  JSR $┼453    RESET ┬┴╙╔├ VECTOR TABLE
  411. ├827  JSR $┼3┬╞    INIT ┬┴╙╔├ VARIABELEN
  412. ├82┴  JSR $┴644    ┬┴╙╔├ ╬┼╫
  413. ├82─  LDX #$╞┬     
  414. ├82╞  TXS          SET STACK FOR ┬┴╙╔├
  415. ├830  JSR $├89┼    INTRO ON SCREEN
  416. ├833  LDA $├7┼0    READ NAME LENGTH
  417. ├836  LDX #$┼1     LOW BYTE ADDRESS NAME (ON $C7E1)
  418. ├838  LDY #$├7     HIGH BYTE ADDRESS NAME
  419. ├83┴  JSR $╞╞┬─    SET FILENAME
  420. ├83─  LDX $8004    READ DEVICE
  421. ├840  LDY #$╞╞     NO SECONDARY ADDRESS NEEDED
  422. ├842  JSR $╞╞┬┴    SET FILE PARAMETERS
  423. ├845  LDA #$00     SET FLAG FOR LOAD
  424. ├847  JSR $╞╞─5    LOAD PROGRAM
  425. ├84┴  BCS $├866    ON ERRORS JUMP OVER ╥╒╬ PART
  426. ├84├  STX $2─      
  427. ├84┼  STY $2┼      SET END OF PROGRAM
  428. ├850  JSR $┴659    ├╠╥ AND POINTER OF ┬┴╙╔├ INTERPRETER ON START
  429. ├853  JSR $┴533    CALCULATE INTERN POINTERS OF PROGRAM
  430. ├856  LDA #$63     
  431. ├858  LDY #$├8     POINTER ON $C863
  432. ├85┴  STA $0300    
  433. ├85─  STY $0301    SET ┬┴╙╔├ WARM START VECTOR
  434. ├860  JMP $┴7┴┼    JUMP INTO ┬┴╙╔├ INTERPRETER (╥╒╬)
  435.  
  436. ├863  JSR $┼453    RESET ┬┴╙╔├ VECTORS
  437. ├866  LDA #$08     LENGTH NAME=8
  438. ├868  LDX #$─8     LOW ADRES 'COMAL.14' (IS ON $C7D8)
  439. ├86┴  LDY #$├7     HIGH ADRES 'COMAL.14'
  440. ├86├  JSR $╞╞┬─    SET FILENAME
  441. ├86╞  LDA #$00     FLAG FOR LOAD
  442. ├871  JSR $╞╞─5    LOAD COMAL.14
  443. ├874  BCC $├879    JUMP IF THERE ARE NO ERRORS
  444. ├876  JMP $┼0╞9    ERROR MESSAGE AND BACK TO ┬┴╙╔├
  445. ├879  JSR $╞─15    RESET ╦┼╥╬┴╠ VECTORS
  446. ├87├  JSR $├625    CHANGE ├╧═┴╠
  447. ├87╞  JSR $├95┼    READ ERROR MESSAGE FILE
  448. ├882  BCC $├887    JUMP IF NO ERRORS
  449. ├884  JSR $├931    HANDLE ERRORS
  450. ├887  JSR $2╞04    INIT ├╧═┴╠ VARIABLES
  451. ├88┴  LDX #$53     FIRST STRING
  452. ├88├  LDA #$├6     POINTER ON $C653
  453. ├88┼  JSR $3103    TEXT OUT
  454. ├891  LDX #$4┼     SECOND STRING
  455. ├893  LDA #$├7     POINTER ON $C74E
  456. ├895  JSR $3103    TEXT OUT
  457. ├898  JSR $├906    ┼╥╥╧╥ ═┼╙╙┴╟┼╙ ╔╬ ═┼═╧╥┘? (┘/╬)
  458. ├89┬  JMP $2╞80    JUMP TO ├╧═┴╠
  459.  
  460. ├89┼  LDA #$02     COLOR 2 (= RED)
  461. ├8┴0  STA $─020    SET BORDER COLOR
  462. ├8┴3  LDA #$00     COLOR 0 (= BLACK)
  463. ├8┴5  STA $─021    SET BACKGROUND COLOR
  464. ├8┴8  LDA #$08     
  465. ├8┴┴  JSR $╞╞─2    DISABLE FONT SWITCH
  466. ├8┴─  LDA #$8┼     
  467. ├8┴╞  JSR $╞╞─2    SET LOWER CASE
  468. ├8┬2  LDY #$37     
  469. ├8┬4  LDA #$08     POINTER ON $0837
  470. ├8┬6  STY $╞┬      
  471. ├8┬8  STA $╞├      INTRO SCREEN
  472. ├8┬┴  LDY #$00     
  473. ├8┬├  LDA #$04     POINTER ON $0400
  474. ├8┬┼  STY $╞─      
  475. ├8├0  STA $╞┼      POINTER ON SCREEN MEMORY
  476. ├8├2  LDX #$04     MOVE 4 PAGES
  477. ├8├4  LDA ($╞┬),Y  READ BYTE
  478. ├8├6  STA ($╞─),Y  MOVE BYTE
  479. ├8├8  INY          NEXT BYTE
  480. ├8├9  BNE $├8├4    NEXT PAGE?
  481. ├8├┬  INC $╞├      NEXT PAGE INTRO SCREEN
  482. ├8├─  INC $╞┼      NEXT PAGE SCREEN
  483. ├8├╞  DEX          PAGE COUNT:-1
  484. ├8─0  BNE $├8├4    NOT LAST PAGE THEN MOVE
  485.  
  486. ├8─2  LDA #$─8     LOW BYTE IS ZERO
  487. ├8─4  STA $╞┼      POINTER ON COLOR SCREEN
  488. ├8─6  LDA #$01     KLEUR 1 (= WHITE)
  489. ├8─8  LDX #$04     4 PAGES TOO
  490. ├8─┴  STA ($╞─),Y  SET COLOR
  491. ├8─├  INY          NEXT BYTE
  492. ├8──  BNE $├8─┴    NEXT PAGE?
  493. ├8─╞  INC $╞┼      VERHOOG PAGINA KLEURENSCHERM
  494. ├8┼1  DEX          VERLAAG PAGINATELLER
  495. ├8┼2  BNE $├8─┴    LAST PAGE?
  496. ├8┼4  RTS          IF SO THEN READY
  497.  
  498. ├8┼5  LDA #$60     RTS INSTRUCTION IN ACCU
  499. ├8┼7  STA $2╞5╞    SET RTS AFTER INIT ROUTINE ├╧═┴╠
  500. ├8┼┴  LDA #$00     
  501. ├8┼├  STA $0342    INIT FOR ├╧═┴╠
  502. ├8┼╞  LDX #$0┴     MOVE 10 BYTES
  503. ├8╞1  LDA $├8╞┬,X  READ BYTE
  504. ├8╞4  STA $1942,X  SET BYTE IN ├╧═┴╠
  505. ├8╞7  DEX          NEXT BYTE
  506. ├8╞8  BPL $├8╞1    LAST ONE?
  507. ├8╞┴  RTS          IF SO THEN READY
  508.  
  509. ├8╞┬  JSR $6┬02    ROUTINE FOR ERROR MESSAGE ├╧═┴╠
  510. ├8╞┼  LDA $10─8    GET MSG FLAG
  511. ├901  BEQ $├968    FALSE THEN GO ON IN ├╧═┴╠
  512. ├903  JSR $├9┬├    ERROR MESSAGE
  513.  
  514. ├906  LDA $0800    GET FLAG (0 = MESSAGES IN MEMORY)
  515. ├909  BNE $├929    IF NOT IM MEMORY THEN READY
  516. ├90┬  LDX #$┴┴     TEXT 'FOUTMELDINGEN IN GEHEUGEN?'
  517. ├90─  LDA #$├7     POINTER ON $C7AA
  518. ├90╞  JSR $3103    STRING OUR 
  519. ├912  JSR $╞╞┼4    GET CHAR FROM KEYBOARD BUFFER
  520. ├915  CMP #$4┴     IS IT 'J'?
  521. ├917  BEQ $├92┴    JA, THEN 'JA' OUT
  522. ├919  CMP #$4┼     IS IT 'N'?
  523. ├91┬  BNE $├912    NO THEN SCAN
  524. ├91─  LDX #$─2     TEKST 'NEE'
  525. ├91╞  LDA #$├7     POINTER ON $C7D2
  526. ├921  JSR $3103    STRING OUT
  527. ├924  LDA #$01     FLAG FOR NO ERROR MESSAGES IN MEMORY
  528. ├926  STA $0800    SET FLAG TRUE
  529. ├929  RTS          READY
  530. ├92┴  LDX #$├─     TEXT 'NEE'
  531. ├92├  LDA #$├7     POINTER ON $C7CD
  532. ├92┼  JMP $3103    STRING OUTGEVE▀-21-
  533.  
  534.  
  535. ├931  LDX #$01     ERROR MESSAGE, NOT IN MEMORY
  536. ├933  STX $0800    SET FLAG TRUE
  537. ├936  CMP #$04     ERROR 4 ('FILE NOT FOUND')
  538. ├938  BNE $├954    IF NOT TEST
  539. ├93┴  LDA $┬┴      READ DEVICE
  540. ├93├  CMP #$08     DRIVE?
  541. ├93┼  BNE $├958    IF NOT THEN SETMSG-
  542. ├940  JSR $╞╞┬4    SEND LISTEN
  543. ├943  LDA #$6╞     ERROR CHANNEL IN ACCU
  544. ├945  STA $┬9      SET SEC ADDRESS
  545. ├947  JSR $╞╞96    SEND SECONDARY ADDRESS
  546. ├94┴  JSR $╞╞┴5    READ BYTE
  547. ├94─  CMP #$0─     END OF LINE?
  548. ├94╞  BNE $├94┴    IF NOT THEN READ
  549. ├951  JMP $╞╞┴┬    SEND UNLISTEN
  550. ├954  CMP #$05     ERROR 5 ('DEVICE NOT PRESENT')
  551. ├956  BNE $├95─    IF NOT THEN READY
  552. ├958  LDA #$00     FLAG FALSE
  553. ├95┴  STA $10─8    SETMSG-
  554. ├95─  RTS          READY
  555.  
  556. ├95┼  LDA #$0┬     NAME LENGTH=11
  557. ├960  LDX #$25     FILENAME 'COMALERRORS'
  558. ├962  LDY #$11     POINTER ON $1125
  559. ├964  JSR $╞╞┬─    SET FILENAAM
  560. ├967  LDA #$01     FILENUMBER 1 IN ACCU
  561. ├969  LDX $┬┴      LAST USED DEVICE IN X
  562. ├96┬  LDY #$62     SECONDARY ADDRESS 2
  563. ├96─  JSR $├60┬    TEST FOR CHANGE IN SEC ADDRESS
  564. ├970  JSR $╞╞├0    OPEN FILE
  565. ├973  BCS $├9┴7    ERRORS, THEN READY
  566. ├975  LDX #$01     FILE 1 IN X
  567. ├977  JSR $╞╞├6    CHKIN FOR FILE 1
  568. ├97┴  LDY #$00     
  569. ├97├  LDA #$├┴     POINTER ON $CA00
  570. ├97┼  STY $╞┬      
  571. ├980  STA $╞├      SET POINTER ON START TEXT
  572. ├982  LDY #$00     INDEX ON NUL
  573. ├984  JSR $├614    READ BYTE FROM FILE
  574. ├987  STA ($╞┬),Y  SAVE BYTE IN MEMORY
  575. ├989  LDA $90      GET STATUS
  576. ├98┬  LSR A        
  577. ├98├  LSR A        TEST EOI, BIT 1
  578. ├98─  BCC $├993    CARRY NOT SET THEN OK
  579. ├98╞  LDA #$04     ELSER ERROR 4
  580. ├991  BCS $├9┴7    OVER AND OUT
  581. ├993  JSR $├9┬6    POINTER:+1
  582. ├996  JSR $├614    READ BYTE FROM FILE
  583. ├999  STA ($╞┬),Y  SAVE BYTE
  584. ├99┬  JSR $├9┬6    POINTER:+1
  585. ├99┼  BIT $90      TEST STATUS BYTE
  586. ├9┴0  BVC $├996    BIT 6 NOT SET (EOF), THEN READ ON
  587.  
  588. ├9┴2  LDA #$╞╞     MARK ON END OF TEXT
  589. ├9┴4  STA ($╞┬),Y  MARK IN MEMORY
  590. ├9┴6  CLC          FLAG: NO ERROR
  591. ├9┴7  PHP          SAVE CARRY ON STACK
  592. ├9┴8  PHA          SAVE ACCU (WITH EVENT ERRORNUMBER) ON STACK TOO
  593. ├9┴9  LDA #$01     FILE 1 IN ACCU
  594. ├9┴┬  JSR $╞╞├3    CLOSE FILE 1
  595. ├9┴┼  JSR $╞╞├├    RESET I/O
  596. ├9┬1  PLA          GET ACCU
  597. ├9┬2  PLP          GET CARRY
  598. ├9┬3  RTS          READY
  599.  
  600. ├9┬4  LDA ($╞┬),Y  READ BYTE FROM MEMORY
  601.  
  602. ├9┬6  INY          INDEX:+1
  603. ├9┬7  BNE $├9┬┬    NEW PAGE?
  604. ├9┬9  INC $╞├      IF SO THEN INCREMENT PAGE COUNTER
  605. ├9┬┬  RTS          READY
  606.  
  607. ├9┬├  JSR $├5┬5    BEEP ROUTINE
  608. ├9┬╞  BNE $├9╞┴    IF NO MESSAGES IN MEMORY GEHEUGEN THEN READY
  609. ├9├1  LDY #$00     
  610. ├9├3  LDA #$├┴     POINTER ON $CA00
  611. ├9├5  STY $╞┬      
  612. ├9├7  STA $╞├      SET POINTER ON TEXT
  613. ├9├9  LDY #$00     ZERO INDEX
  614. ├9├┬  JSR $├9┬4    GET BYTES FROM MEMORY
  615. ├9├┼  CMP #$╞╞     END OF TEXT?
  616. ├9─0  BEQ $├9╞┬    IF SO THEN 'ERROR' OUT
  617. ├9─2  CMP $2─      FOUND ERROR NUMBER?
  618. ├9─4  BEQ $├9┼4    IF SO THEN OUT
  619. ├9─6  JSR $├9┬4    GET BYTE
  620. ├9─9  STA $2┬      SAVE LENGTH
  621. ├9─┬  JSR $├9┬4    GET CHAR
  622. ├9─┼  DEC $2┬      LENGTH;:-1
  623. ├9┼0  BPL $├9─┬    NEXT IF LENGTH<>0
  624. ├9┼2  BMI $├9├┬    AND GO ON
  625. ├9┼4  JSR $├9┬4    GET CHAR
  626. ├9┼7  STA $2┬      SAVE AS LENGTH
  627. ├9┼9  JSR $├9┬4    GET CHAR
  628. ├9┼├  STA $19      SAVE AS FLAG
  629. ├9┼┼  JSR $├9┬4    GET CHAR
  630. ├9╞1  JSR $╞╞─2    CHAR OUT
  631. ├9╞4  DEC $2┬      LENGTH:-1
  632. ├9╞6  BNE $├9┼┼    JUMP IF THERE IS TEXT
  633. ├9╞8  PLA          GET BYTE FROM STACK
  634. ├9╞9  PLA          GET ASECOND CHAR
  635. ├9╞┴  RTS          BACK TO ├╧═┴╠
  636. ├9╞┬  PLA          GET BYTE FROM STACK
  637. ├9╞├  PLA          GET BYTE FROM STACK
  638. ├9╞─  JMP $19┴╞    'ERROR' OUT
  639.  
  640. 0814  LDY #$37     
  641. 0816  LDA #$0├     POINTER ON $0C37
  642. 0818  STY $╞┬      
  643. 081┴  STA $╞├      SET SOURCE ADDRESS
  644. 081├  LDY #$00     
  645. 081┼  LDA #$├3     POINTER ON $C300
  646. 0820  STY $╞─      
  647. 0822  STA $╞┼      SET DESTINATION ADDRESS
  648. 0824  LDX #$07     MOVE 7 PAGES
  649. 0826  LDA ($╞┬),Y  LOAD BYTE
  650. 0828  STA ($╞─),Y  MOVE BYTE
  651. 082┴  INY          NEXTBYTE
  652. 082┬  BNE $0826    BYTES LEFT ON THIS PAGE, THEN JUMP
  653. 082─  INC $╞├      NEXT PAGE SOURCE
  654. 082╞  INC $╞┼      NEXT PAGE DESTIN
  655. 0831  DEX          PAGE COUNTER:-1
  656. 0832  BNE $0826    ANOTHER PAGE?
  657. 0834  JMP $├7╞2    JUMP TO BOOT
  658.  
  659. 3103  STA $76      
  660. 3105  STX $75      SAVE POINTER IN X/A
  661. 3107  LDY #$00     
  662. 3109  LDA ($75),Y  GET BYTE
  663. 310┬  BEQ $3114    CODE FOR LAST CHAR?
  664. 310─  JSR $╞╞─2    IF NOT THEN CHAR OUT
  665. 3110  INY          NEXT BYTE
  666. 3111  JMP $3109    ENDLOOP
  667. 3114  RTS          AND READY 
  668.  
  669. ▒                                            DOCUMENTATIE ┬╧╧╘═.05
  670.  
  671. ▒ ▒┐